import { Button, _decorator } from 'cc';
import { HeroEntityItem } from '../components/items/HeroEntityItem';
import HeroEntity from '../heroModule/HeroEntity';
import BDialog from '../libs/component/dialog/BDialog';
const { ccclass, property } = _decorator;

@ccclass('HeroDetailDialog')
export class HeroDetailDialog extends BDialog {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    protected _param: HeroEntity = undefined!;
    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/
    @property({ group: { name: 'Hero', id: '3' }, type: HeroEntityItem, tooltip: `显示英雄状态视图` })
    private item: HeroEntityItem = undefined!;

    @property({ group: { name: 'Hero', id: '3' }, type: Button, tooltip: `英雄升级按钮组件` })
    private upButton: Button = undefined!;

    @property({ group: { name: 'Hero', id: '3' }, type: Button, tooltip: `英雄重置按钮组件` })
    private resetButton: Button = undefined!;
    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/
    protected onLoad(): void {
        super.onLoad();
        this.upButton.node.on(Button.EventType.CLICK, this.onClickUpLevel, this);
        this.resetButton.node.on(Button.EventType.CLICK, this.onClickReset, this);
    }

    protected onEnable(): void {
        this.updateView(this.param);
    }
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    private updateView(value: HeroEntity = this._param) {
        if (!value) {
            return;
        }
        if (!this.enabledInHierarchy) {
            return;
        }

        this.item.value = value;
    }


    private onClickUpLevel() {
        //TODO: 英雄升级
    }


    private onClickReset() {
        //TODO: 英雄重置
    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    public get param(): HeroEntity {
        return this._param;
    }

    public set param(value: HeroEntity) {
        this._param = value;
    }
}


